﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DnDCharacterBuilder
{
    [Serializable]
    public abstract class CharClass
    {
        public string Name { set; get; }

        public int FortBonus { set; get; }
        public int ReflexBonus { set; get; }
        public int WillBonus { set; get; } 

        public int HealthInit { set; get; }
        public int HealthPerLevel { set; get; }
        public int SurgePerDay { set; get; } 
            
            
    }

    [Serializable]
    public class ClericClass : CharClass
    {
        public ClericClass()
        {
            Name = "Cleric";
            
            FortBonus = 0;
            ReflexBonus = 0;
            WillBonus = 2;

            HealthInit = 12;
            HealthPerLevel = 5;
            SurgePerDay = 7;
        }
    }

    [Serializable]
    public class FighterClass : CharClass
    {
        public FighterClass()
        {
            Name = "Fighter";

            FortBonus = 2;
            ReflexBonus = 0;
            WillBonus = 0;

            HealthInit = 15;
            HealthPerLevel = 6;
            SurgePerDay = 9;
        }
    }

    [Serializable]
    public class PaladinClass : CharClass
    {
        public PaladinClass()
        {
            Name = "Paladin";

            FortBonus = 1;
            ReflexBonus = 1;
            WillBonus = 1;

            HealthInit = 15;
            HealthPerLevel = 6;
            SurgePerDay = 10;
        }
    }

    [Serializable]
    public class RangerClass : CharClass
    {
        public RangerClass()
        {
            Name = "Ranger";

            FortBonus = 1;
            ReflexBonus = 1;
            WillBonus = 0;

            HealthInit = 12;
            HealthPerLevel = 5;
            SurgePerDay = 6;
        }
    }

    [Serializable]
    public class RogueClass : CharClass
    {
        public RogueClass() 
        {
            Name = "Rogue";

            FortBonus = 0;
            ReflexBonus = 2;
            WillBonus = 0;

            HealthInit = 12;
            HealthPerLevel = 5;
            SurgePerDay = 6;
        }    
    }

    [Serializable]
    public class WarlockClass : CharClass
    {
        public WarlockClass()
        {
            Name = "Warlock";

            FortBonus = 0;
            ReflexBonus = 1;
            WillBonus = 1;

            HealthInit = 12;
            HealthPerLevel = 5;
            
            SurgePerDay = 6;
        }
    }

    [Serializable]
    public class WarlordClass : CharClass
    {
        public WarlordClass()
        {
            Name = "Warlord";

            FortBonus = 1;
            ReflexBonus = 0;
            WillBonus = 1;

            HealthInit = 12;
            HealthPerLevel = 5;
            
            SurgePerDay = 7;
        }
    }

    [Serializable]
    public class WizardClass : CharClass
    {
        public WizardClass()
        {
            Name = "Wizard";

            FortBonus = 0;
            ReflexBonus = 0;
            WillBonus = 2;

            HealthInit = 10;
            HealthPerLevel = 4;
            SurgePerDay = 6;
        }
    }

}
